#ifndef __T_MUX__
#define __T_MUX__

#include "TPuerto.h"
#include "TPlaca.h"
#include "TDireccion.h"
#include "TListaMensajes.h"

#define PUERTO_MIN 10000
#define PUERTO_MAX 56000
#define MAX_CARGA 256
#define MUX_OK 0
#define MUX_ERR_PLACACONECTADA 1
#define MUX_ERR_MENSAJECREAR 2
#define MUX_ERR_MENSAJEINSERTAR 3
#define MUX_ERR_MEMORIA 4
#define MUX_ERR_NOHAYMENSAJESENPUERTO 5
#define MUX_ERR_INESPERADO 6
#define MUX_ERR_MENSAJESTRVACIO 7
#define MUX_ERR_MEDIOTRANSMITIR 8
#define MUX_ERR_DESCONOCIDO 9

typedef struct s_mux {
	TPlaca* placa;
	TListaMensajes* mensajes;
} TMux;

int Mux_Crear(struct s_mux* mux);
int Mux_Destruir(struct s_mux* mux);
int Mux_Conectar(struct s_mux* mux, TPlaca* placa);
int Mux_Desconectar(struct s_mux* mux);
int Mux_Recibir(struct s_mux* mux, void* mensaje, size_t tam);
int Mux_Enviar(struct s_mux* mux, void* mensaje, size_t tam, TDireccion dir, TPuerto puerto, int prioridad);
size_t Mux_Leer(struct s_mux* mux, TPuerto puerto, void* destino);

#endif


